Skip to content

bridge: add persistent message image storage - #11

Open
undefined-moe wants to merge 7 commits into
mainfrom
feat/image-storage
Open

undefined-moe wants to merge 7 commits into
mainfrom
feat/image-storage

Conversation

@undefined-moe

Copy link
Copy Markdown
Collaborator

功能

  • 默认关闭的消息图片持久归档,分别保存原图与真实预览图,记录账号、会话和 UTC 日期;支持重启恢复及删除墓碑。
  • MTProto 优先读取本地字节范围,图片源过期或关闭归档后仍可读取已有副本。
  • WebUI 支持筛选、聚合分页、容量统计和确认删除;管理 RPC 必须通过 SSO 会话及显式管理员白名单验证,不改变匿名账号发现。
  • 修复 QQ 图片共享直链查询等待无法及时取消的问题。

验证

  • 单元测试 1871 项通过(1795 主 Vitest + 64 Solid + 12 Node),另有 1 项既有跳过。
  • 相关服务端 e2e:9 个文件、46 项通过;真实浏览器 e2e:2 项通过。
  • typecheck、typecheck:webui 和完整 build 通过;独立审查通过,无发现问题。

限制与已知失败

  • 不回填历史消息,不保存视频、头像或普通附件;未归档且已过期的图片无法恢复。
  • 管理员白名单默认为空;数据库和图片目录需一起备份,修改目录不会自动迁移。
  • photo-send-reconciliation.e2e 的 m/x 缩略图快照存在既有失败,已在干净开发基线 afe53aa 独立复现;未修改该无关项,未声称全项目 e2e 全部通过。

@std-microblock

Copy link
Copy Markdown
Owner

草,在此之前我们有用过c-p-SSO吗

@std-microblock

Copy link
Copy Markdown
Owner

考虑到这玩意没做鉴权感觉可能甚至我们自己sso会好一点,以及crossgram真的会考虑同时服务多个用户吗,感觉加一个用户都会带来不少的内存压力?

@std-microblock

Copy link
Copy Markdown
Owner

这个感觉主要case就是在老消息可能文件会被清退导致后面去翻拉不到吧,我其实比较倾向于做一个接口,然后单独开插件去做这个事情?这样的话

  • 可以允许用户自己选存储方式,包括存在本地,转存到一些CDN,甚至白嫖一些公开图床
  • 可以允许用户自己选择存储范围
  • 可能也更干净一些?

@undefined-moe

Copy link
Copy Markdown
Collaborator Author

对的 好像不需要考虑多用户

@undefined-moe

Copy link
Copy Markdown
Collaborator Author

简化实现的话 先实现本地存储其实就够了,零依赖,s3的话完全可以rclone mount来做

@std-microblock

Copy link
Copy Markdown
Owner

你用rclone mount的话是可以实现存进去,但是不能实现取回不过服务器

@std-microblock

Copy link
Copy Markdown
Owner

那进cdn的意义是什么(

@std-microblock

Copy link
Copy Markdown
Owner

而且这个功能为什么会需要webui加一个tab 这个tab的意义是什么(

@undefined-moe

Copy link
Copy Markdown
Collaborator Author

取回设计上就是要过服务器的吧 如果有需要的话也可以再起一个file server作为base path
webui的tab是用来清理文件的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants